//package com.example.fresh_fruit.interceptor;
//
//import com.example.fresh_fruit.permission.Permission;
//import com.example.fresh_fruit.service.BusinessPersionService;
//import com.example.fresh_fruit.util.TokenUtil;
//import org.springframework.web.method.HandlerMethod;
//import org.springframework.web.servlet.HandlerInterceptor;
//import org.springframework.web.servlet.ModelAndView;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
///**
// * @author :飞天の鱼
// * @date : 2022/8/15 9:57
// * <p>
// * * 1.配置拦截器要拦截哪一些请求
// * * 2.把拦截器放在容器中
// */
//
////拦截器
//
//public class MyInterceptor implements HandlerInterceptor {
//
//    final BusinessPersionService businessPersionService;
//
//    public MyInterceptor(BusinessPersionService businessPersionService) {
//        this.businessPersionService = businessPersionService;
//    }
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//
//        //从请求头中获取token
//        String token = request.getHeader("token");
//        Integer persionId = TokenUtil.getAudience(token);
//        //获取权限
//        Permission requiredPermission = hasPermission((HandlerMethod) handler);
//
//        //权限为空,即查找不到权限注解
//        if (requiredPermission == null) {
//            //寻找到的ID，（或者Token不为空）
//            if (persionId != null) {
//                backToken(persionId,response,request);
//            }
//            return true;
//        } else {//权限不为空
//            //寻找到的ID，（或者Token为空）
//            if (persionId == null) {
//                //返回前台的信息
//                response.getWriter().println("{\"code\":234}");
//                return false;
//            } else {
//                //权限不为空，并且存在id
//                if (businessPersionService.find(persionId, requiredPermission.value())) {
//                    backToken(persionId,response,request);
//                    return true;
//                } else {
//                    //权限不为空，不存在id
//                    response.getWriter().println("{\"code\":256}");
//                    return false;
//                }
//            }
//        }
//    }
//
//    private void backToken(int persionId, HttpServletResponse response,HttpServletRequest request) {
//        String newToken = TokenUtil.createToken(persionId);
//        System.out.println("新生成的token" + newToken);
//        //再放入相应头中
//        response.setHeader("token", newToken);
//        request.setAttribute("id",persionId);
//    }
//
//    /**
//     * 是否有权限
//     */
//    private Permission hasPermission(HandlerMethod handler) {
//        return handler.getMethod().getAnnotation(Permission.class);
//    }
//
//
////     * 处理请求完成后视图渲染之前的处理操作
////     * 通过ModelAndView参数改变显示的视图，或发往视图的方法
//
//    @Override
//    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object
//            handler, ModelAndView modelAndView) {
//        System.out.println("执行了postHandle方法");
//    }
//
//
////     * 视图渲染之后的操作
//
//    @Override
//    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception
//            arg3) throws Exception {
//        System.out.println("执行到了afterCompletion方法");
//    }
//
//}
